package com.example.cursor_orm.dao;

import com.example.cursor_orm.model.UserRole;
import java.util.List;

/**
 * 用户角色关联DAO接口
 * 继承BaseDAO并添加用户角色关联特有的查询方法
 */
public interface UserRoleDAO extends BaseDAO<UserRole> {
    
    /**
     * 根据用户ID查询用户角色关联列表
     * @param userId 用户ID
     * @return 用户角色关联列表
     */
    List<UserRole> findByUserId(Integer userId);
    
    /**
     * 根据角色ID查询用户角色关联列表
     * @param roleId 角色ID
     * @return 用户角色关联列表
     */
    List<UserRole> findByRoleId(Integer roleId);
    
    /**
     * 删除用户的所有角色
     * @param userId 用户ID
     * @return 影响的行数
     */
    int deleteByUserId(Integer userId);
    
    /**
     * 删除角色的所有用户
     * @param roleId 角色ID
     * @return 影响的行数
     */
    int deleteByRoleId(Integer roleId);
    
    /**
     * 为用户分配角色
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return 影响的行数
     */
    int assignRoleToUser(Integer userId, Integer roleId);
    
    /**
     * 移除用户的角色
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return 影响的行数
     */
    int removeRoleFromUser(Integer userId, Integer roleId);
    
    /**
     * 检查用户是否拥有指定角色
     * @param userId 用户ID
     * @param roleId 角色ID
     * @return 是否拥有
     */
    boolean hasRole(Integer userId, Integer roleId);
} 